perm filename DRAIT.F4[CMS,LCS]3 blob sn#106223 filedate 1974-05-31 generic text, type T, neo UTF8
00100		DIMENSION II(1024),JJ(1024),KK(1024),LL(1024),KP(5),NN(4096)
00200		1,A(384),B(384),IB(512)
00300		COMMON KP,NP,NN,JF
00400		IMP(I)=IABS(NN(I)/100000000)
00500	1	JE=0
00600		MN=0
00700		IP=-1
00800		MO=0
00900		NZ=10
01000		IM=0
01100		JF=0
01200		IS=-1
01300		NF=0
01400		LF=1
01500		CALL DPYCLR
01600		CALL TYPLOC(-350,-511)
01700		DO 407 I=1,4
01800	407	KP(I)='     '
01900		CALL DPYSET(4,LL,1000)
02000		CALL DPYSET(3,KK,1000)
02100		CALL DPYSET(2,JJ,1000)
02200		CALL DPYSET(1,II,1000)
02300		MN=0
02400	2	TYPE 5
02500	5	FORMAT(' TYPE:<CR>;TO DRAW NEW PICTURE.'/
02600		1' OR TYPE IN NAME TO USE OLD PICTURE.'/)
02700		ACCEPT 3,NAM
02800	3	FORMAT(A5)
02900		IF(NAM.EQ.'     ')GO TO 140
03000	   	IF(.NOT.LOOKD(NAM))GO TO 2
03100	515	CALL IFILE(1,NAM)
03200		READ(1)LE,(NN(K),K=MN+1,MN+LE)
03300		MN=MN+LE
03400		IP=-1
03500		IF(MO.NE.'P')GO TO 517
03600		MO=100000000
03700		DO 518 K=MN-LE+1,MN
03800		MP=1
03900		IF(NN(K))MP=-1
04000		NN(K)=IABS(NN(K))
04100	518	NN(K)=MP*(NP*MO+(MOD(NN(K),MO)))
04200		GO TO 503
04300	517	DO 388 K=1,MN
04400		NP=MOD(IMP(K),10)
04500		CALL SETPOG(NP)
04600		CALL INXY(NX,NY,K)
04700		MP=1
04800		IF(NN(K))MP=-1
04900	388	CALL IPEN(NX,NY,MP,NZ)
05000	   	DO 193 I=1,4
05100		KP(I)='VIS  '
05200	193	CALL DPYOUT(I)
05300		CALL SETPOG(1)
05400	140	NP=1
05500		CALL IPOG(NZ)
05600	
05700	211	NS=0
05800	120	LV=0
05900	144	CALL SETCUR(NX,NY,LV)
06000		IF(NS)TYPE 6
06100	6	FORMAT(' :'$)
06200		IF(JF.GT.0)TYPE 634
06300	634	FORMAT(' O'$)
06400		ACCEPT 103,M,N
06500	103	FORMAT(2A1)
06600		LX=NX
06700		LY=NY
06800		CALL RDCUR(NX,NY)
06900		IF(NC)GO TO 191
07000		IF(M.NE.' ')GO TO 11
07100	308	IF(LV.NE.0)GO TO 192
07200	301	CALL IPAK(NX,NY,MN,1,NZ)
07300		LV=1
07400		GO TO 144
07500	192 	CALL IPAK(NX,NY,MN,-1,NZ)
07600	341	N=NP
07700	278	CALL DPYOUT(N)
07800		KP(N)='VIS  '
07900	360	IF(IP)CALL IPOG(NZ)
08000	260	IF(NS)GO TO 144
08100		GO TO 120
08200	
08300	11	IF(M.EQ.':')GO TO 261
08400		IF(M.EQ.'.')GO TO 303
08500		IF(M.EQ.'W')GO TO 380
08600	  	IF(M.EQ.'H')GO TO 306
08700		IF(M.EQ.'V')GO TO 307
08800		IF(M.EQ.'B')GO TO 105
08900	  	IF(M.EQ.'C')GO TO 150
09000		IF(M.EQ.'+')GO TO 500
09100		IF(M.EQ.'-')GO TO 501
09200		IF(M.EQ.'*')GO TO 502
09300		IF(M.EQ.'J')GO TO 608
09400		IF(M.EQ.'O')GO TO 630
09500		IF(M.EQ.'A')GO TO 510
09600		IF(M.EQ.'E')GO TO 425
09700		IF(M.EQ.'G')GO TO 799
09800		IF(M.EQ.'(')GO TO 431
09900		IF(M.EQ.')')GO TO 432
10000	  	IF(M.EQ.'I'.OR.M.EQ.'S')GO TO 230
10100		IF(M.EQ.'X')GO TO 104
10200		IF(M.EQ.'Z')GO TO 580
10300		IF(M.EQ.'F')GO TO 601
10400		IF(M.NE.'P')GO TO 260
10500		IP=-1
10600		IF(N.EQ.'I')GO TO 258
10700		IF(N.EQ.'D')GO TO 340
10800		IF(N.NE.' ')GO TO 231
10900	259	NP=NP+1
11000		IF(NP.GT.4)NP=1
11100	251	CALL SETPOG(NP)
11200		GO TO 503
11300	630	IF(JF.GT.0)GO TO 701
11400		REREAD 710,M,JF
11500	710	FORMAT(A1,I2)
11600		IF(JF.LT.1.OR.JF.GT.19.OR.JF.EQ.10)JF=1
11700		GO TO 261
11800	701	JF=0
11900		GO TO 211
12000	303	IF(LV.EQ.0)GO TO 301
12100		CALL IPAK(NX,NY,MN,-1,NZ)
12200	333	KP(NP)='VIS  '
12300		IF(IP)CALL IPOG(NZ)
12400		CALL DPYOUT(NP)
12500		NX=LX
12600		NY=LY
12700		IF(.NOT.NC)GO TO 301
12800		NC=0
12900		GO TO 211
13000	601	IT=0
13100	702	IT=IT+1
13200		IF(IT.GT.19)GO TO 708
13300		IF(IT.EQ.10)IT=11
13400		I=0
13500		K=0
13600	602	I=I+1
13700		IF(I.GT.MN)GO TO 660
13800	606	IF(MOD(IMP(I),10).NE.NP)GO TO 602
13900		IF(IMP(I)/10.NE.IT)GO TO 602
14000		K=K+1
14100		CALL INXY(N,M,I)
14200		IF(IT.GT.10)CALL INXY(M,N,I)
14300		A(K)=N*NZ/10
14400		B(K)=M*NZ/10
14500		IB(K)=3
14600		IF(NN(I))IB(K)=2
14700		I=I+1
14800		IF(I.LE.MN)GO TO 606
14900	660	IF(K.LT.3)GO TO 702
15000		IB(1)=K
15100		JI=IT
15200		IF(IT.GT.10)JI=IT-10
15300		IF(IS)JI=JI+5
15400		CALL FILLER(A,B,IB,JI,IS,IT,LD,LS)
15500		GO TO 702
15600	708	IF(IS)GO TO 341
15700		GO TO 689
15800	608	NV=-1
15900		IF(LV.EQ.0)NV=1
16000		CALL IPAK(JX,JY,MN,NV,NZ)
16100		NX=JX
16200		NY=JY
16300		GO TO 341
16400	306	NY=LY
16500		GO TO 308
16600	307	NX=LX
16700		GO TO 308
16800	230	IF(N.EQ.' ')GO TO 258
16900	231	IF(N.LT.'1'.OR.N.GT.'4')GO TO 255
17000		REREAD 408,M,N
17100	408	FORMAT(A1,I1)
17200		IF(M.EQ.'S')GO TO 278
17300	   	IF(M.NE.'I')GO TO 256
17400	257	KP(N)='     '
17500		CALL HYDPOG(N)
17600		IF(M.EQ.'P')GO TO 259
17700		GO TO 360
17800	255	IF(M.EQ.'P')GO TO 259
17900	258	IF(M.EQ.'S')GO TO 341
18000		N=NP
18100		GO TO 257
18200	256	NP=N
18300		GO TO 251
18400	261	IF(NS)GO TO 211
18500		NS=-1
18600		IF(LV.EQ.1)GO TO 666
18700		JX=NX
18800		JY=NY
18900		GO TO 301
19000	666	JX=LX
19100		JY=LY
19200		GO TO 192
19300	580	IF(IP)GO TO 581
19400		IP=-1
19500		GO TO 360
19600	581	IP=0
19700		N=5
19800		GO TO 257
19900	500	IF(NZ.EQ.20)GO TO 503
20000		NZ=NZ+1
20100		GO TO 503
20200	501	IF(NZ.EQ.5)GO TO 503
20300		NZ=NZ-1
20400		GO TO 503
20500	502	IF(NZ.EQ.10)GO TO 503
20600		NZ=10
20700	503	CALL CLRPOG(NP)
20800		CALL IDRA(MN,NZ)
20900	335	NS=0
21000		GO TO 341
21100	510	REREAD 516,MO,NAM
21200	516	FORMAT(1XA1,A5)
21300		IF(MO.EQ.'G')GO TO 778
21400		IF(.NOT.LOOKD(NAM))GO TO 260
21500		GO TO 515
21600	778	CALL GETFIL(NAM)
21700		CALL FASTIN(IB,2)
21800		MS=IB(2)
21900		CALL GETFIL(NAM)
22000		CALL FASTIN(IB,MS+2)
22100		CALL GETP(IB,NN(MN+1))
22200		DO 777 K=MN+1,MN+MS
22300		I=NP*100000000
22400		IF(NN(K))I=-I	
22500	777	NN(K)=NN(K)+I	
22600		MN=MN+MS
22700		GO TO 503
22800	340	CALL CLRPOG(NP)
22900		J=0
23000	400	J=J+1
23100	507	IF(J.GT.MN)GO TO 466
23200		MP=MOD(IMP(J),10)
23300		IF(MP.NE.NP)GO TO 400
23400		DO 401 I=J,MN-1
23500	401	NN(I)=NN(I+1)
23600		MN=MN-1
23700		GO TO 507
23800	466	IF(JE)GO TO 467
23900		IP=-1
24000		GO TO 431
24100	105	LP=MOD(IMP(MN),10)
24200		IF(MN.LT.1.OR.LP.NE.NP)GO TO 335
24300		IF(NP.EQ.1)II(2)=II(2)-1
24400		IF(NP.EQ.2)JJ(2)=JJ(2)-1
24500		IF(NP.EQ.3)KK(2)=KK(2)-1
24600		IF(NP.EQ.4)LL(2)=LL(2)-1
24700	        CALL ACCPOG(NP)
24800		MN=MN-1
24900		LV=0
25000		IF(NN(MN))LV=1
25100		GO TO 341
25200	150	NC=-1
25300		IF(LV.NE.1)GO TO 301
25400	191	R=0
25500		MN=MN-1
25600		RM=(NX-LX)**2+(NY-LY)**2
25700		RM=SQRT(RM)
25800		KX=LX+RM*SIND(R)
25900		KY=LY+RM*COSD(R)
26000		CALL IPAK(KX,KY,MN,1,NZ)
26100		DO 151 K=6,360,6
26200		R=K
26300		KX=LX+RM*SIND(R)
26400		KY=LY+RM*COSD(R)
26500	151	CALL IPAK(KX,KY,MN,-1,NZ)
26600		GO TO 333
26700	380	IF(LV.NE.1)GO TO 103
26800		REREAD 377,M,N
26900	377	FORMAT(A1,I2)
27000		IF(N.LT.4)N=100
27100		KN=N/10
27200		IF(KN.LT.2)KN=2
27300		DO 381 I=0,N,KN
27400		CALL IPAK(LX-N/2+I,LY-N/2+I,MN,1,NZ)
27500	381	CALL IPAK(NX-N/2+I,NY-N/2+I,MN,-1,NZ)
27600		GO TO 341
27700	799	LX=NX*10/NZ
27800		LY=NY*10/NZ
27900		I=MN
28000		NY=1000
28100		DO 801 K=1,MN
28200		CALL INXY(JX,JY,K)
28300		NX=IABS(JX-LX)+IABS(JY-LY)
28400		IF(NY.LT.NX)GO TO 801
28500		I=K
28600		NY=NX
28700	801	CONTINUE
28800		LF=0
28900		MP=NP
29000		IN=1
29100		GO TO 548
29200	813	IN=-1
29300		I=MN+1
29400		GO TO 426
29500	425	I=0
29600		MP=NP
29700		IF(N.EQ.'E')GO TO 813
29800		IN=1
29900	426	I=I+IN
30000	784	IF(I.GT.MN.OR.I.LT.1)GO TO 804
30100	548	CALL INXY(NX,NY,I)
30200		CALL SETCUR(NX*NZ/10,NY*NZ/10,1)
30300	794	IF(IN)TYPE 815
30400	815	FORMAT(' -'/)
30500		TYPE 469
30600	469	FORMAT(' EDIT?'$)
30700		ACCEPT 103,M,N
30800		IF(M.EQ.' ')GO TO 426
30900		IF(M.EQ.'-')GO TO 810
31000		IF(M.EQ.'+')GO TO 783
31100		IF(M.EQ.'D')GO TO 470
31200		IF(M.EQ.'I')GO TO 547
31300		IF(M.EQ.'O')GO TO 782
31400		IF(M.EQ.'C')GO TO 800
31500		IF(M.EQ.':')GO TO 790
31550		IF(M.EQ.')')GO TO 900
31600		CALL RDCUR(NX,NY)
31700		IF(M.EQ.'M')GO TO 780
31800		IF(M.NE.'B')GO TO 804
31900		I=I-IN
32000		GO TO 548
32100	804	NP=MP
32200		GO TO 211
32300	810	IN=-IN
32400		GO TO 426
32410	900	IF(IN)GO TO 901
32420		IM=I
32430		NF=LF
32440		GO TO 794
32450	901	IM=LF
32460		NF=I
32470		GO TO 794
32500	800	IF(LF.EQ.0.OR.LF.GT.MN)LF=I
32600		NP=MP
32700		DO 806 K=LF,I,IN
32800		CALL INXY(NX,NY,K)
32900		JF=IMP(K)/10
33000		MS=1
33100		IF(NN(K))MS=-1
33200	806	CALL IPAK(NX,NY,MN,MS,10)
33300	814	JF=0
33400		LF=0
33500		GO TO 471
33600	790	LF=I
33700		GO TO 794
33800	780	JF=IMP(I)/10
33900		LF=I
34000		GO TO 786
34100	783	REREAD 377,M,N
34200		I=I+IN*N
34300		GO TO 784
34400	782	REREAD 377,M,JF
34500		IF(JF.OR.JF.EQ.10.OR.JF.GT.19)JF=0
34600		IF(LF.EQ.0.OR.LF.GT.MN)LF=I
34700	796	CALL INXY(NX,NY,LF)
34800	786	MS=1
34900		IF(NN(LF))MS=-1
35000		NP=MOD(IMP(LF),10)
35100		LF=LF-1
35200		CALL IPAK(NX,NY,LF,MS,10)
35300		LF=LF+IN
35400		IF(IN.AND.(LF-I))GO TO 814
35500		IF(.NOT.IN.AND.(I-LF))GO TO 814
35600		GO TO 796
35700	547	NN(I)=-NN(I)
35800		GO TO 471
35900	470	MN=MN-1
36000		DO 428 K=I,MN
36100	428	NN(K)=NN(K+1)
36200	471	CALL CLRPOG(NP)
36300		CALL IDRA(MN,NZ)
36400		CALL DPYOUT(NP)
36500		GO TO 784
36600	431	NX=0
36700		NY=0
36800		NF=MN+1
36900		IM=0
37000		GO TO 211
37100	432	IF(IM.EQ.0)IM=MN
37200		DO 433 I=NF,IM
37300		CALL INXY(IX,IY,I)
37400		IX=NX+IX
37500		IY=NY+IY
37600		MP=1
37700		IF(NN(I))MP=-1
37800	433	CALL IPAK(IX,IY,MN,MP,NZ)
37900		GO TO 341
38000	
38100	104	CALL CLRCUR
38200		CALL IPOG(NZ)
38300		IP=-1
38400	   	TYPE 111
38500	111	FORMAT(' TYPE:<CR>;TO CONTINUE.'/' TYPE:''N''<CR>;TO START OVER.'/
38600		2' TYPE:''X'' TO SAVE VIS POGS IF FINISHED'/
38700		3' OR TYPE:''P'' TO PLOT ALL VIS POGS'/)
38800		ACCEPT 103,M,NV
38900		IF(M.EQ.'N')GO TO 1
39000		IF(M.EQ.'P')GO TO 557
39100		IF(M.NE.'X')GO TO 120
39200	127	TYPE 121
39300	121	FORMAT(' TYPE A FIVE LETTER NAME FOR THIS PICTURE.'/)
39400		ACCEPT 3,NAM
39500		IF(NAM.EQ.'     ')GO TO 127
39600	557	MP=0
39700		DO 405 IK=1,4
39800		IF(KP(IK).NE.'VIS  ')GO TO 405
39900		MP=MP+1
40000	405	CONTINUE
40100		IF(MP.EQ.0)GO TO 104
40200		IF(M.EQ.'P')GO TO 555
40300		NP=0
40400		JE=-1
40500	467	NP=NP+1
40600		IF(NP.GT.4)GO TO 468
40700		IF(KP(NP).NE.'VIS  ')GO TO 340
40800		GO TO 467
40900	468	CALL OFILE(1,NAM)
41000		WRITE(1)MN,(NN(K),K=1,MN)
41100		END FILE 1
41200		GO TO 1
41300	555	TYPE 587
41400	587	FORMAT(/' PLOTING CURRENT POG'/)
41500		CALL PLOTS(I)
41600		IF(NV.EQ.'L')GO TO 797
41700		IF(NV.EQ.'S')GO TO 850
41800		IF(NV.NE.'D'.AND.NV.NE.'B')GO TO 851
41900		LD=-1
42000	850	LS=-1
42100	851	IS=0
42200		GO TO 601
42300	689	IF(NV.EQ.'S'.OR.NV.EQ.'D'.OR.NV.EQ.'Z')GO TO 711
42400	797	DO 556 I=1,MN
42500		IF(MOD(IMP(I),10).NE.NP)GO TO 556
42600		CALL INXY(NX,NY,I)
42700		MO=3
42800		IF(NN(I))MO=2
42900		CALL PLOT(NX*NZ/10,NY*NZ/10,MO)
43000	556	CONTINUE
43100	711	CALL PLOT(0,0,3)
43200		TYPE 691
43300	691	FORMAT(' FINISHED PLOTING!'/)
43400		IS=-1
43500		LS=0
43600		LD=0
43700		GO TO 211
43800		END
43900	
44000		SUBROUTINE IPOG(NZ)
44100		COMMON KP(5),NP,NN(4096),JF
44200		DIMENSION MM(24),JP(4)
44300		CALL DPYSET(5,MM,24)
44400		CALL DPYTXT(100,-430,'POG1 POG2 POG3 POG4 ZOOM ',5)
44500		KP(5)=' REG '
44600		IF(NZ.LT.10)KP(5)=' --- '
44700		IF(NZ.GT.10)KP(5)=' +++ '
44800		CALL DPYTXT(100,-450,KP,5)
44900		DO 4 J=1,4
45000		JP(J)='     '
45100	4	IF(J.EQ.NP)JP(J)=' ↑↑  '
45200		CALL DPYTXT(100,-470,JP,4)
45300		CALL DPYOUT(5)
45400		CALL SETPOG(NP)
45500		RETURN
45600		END
45700		SUBROUTINE IPAK(NX,NY,MN,MP,NZ)
45800		COMMON KP(5),NP,NN(4096),JF
45900		MN=MN+1
46000		IX=(NX*10/NZ)+1024
46100		IY=(NY*10/NZ)+1024
46200		NN(MN)=MP*((JF*10+NP)*100000000+IX*10000+IY)
46300		CALL IPEN(NX,NY,MP,10)
46400		RETURN
46500		END
46600		SUBROUTINE IPEN(NX,NY,MP,NZ)
46700		IX=NX*NZ/10
46800		IF(IX.GT.950)IX=950
46900		IF(IX.LT.-950)IX=-950
47000		IY=NY*NZ/10
47100		IF(IY.GT.950)IY=950
47200		IF(IY.LT.-950)IY=-950
47300		IF(MP)GO TO 1
47400		CALL AIVECT(IX,IY)
47500		RETURN
47600	1	CALL AVECT(IX,IY)
47700		RETURN
47800		END
47900		SUBROUTINE INXY(NX,NY,MN)
48000		COMMON KP(5),NP,NN(4096),JF
48100		J=IABS(NN(MN))
48200		NY=MOD(J,10000)-1024
48300		NX=(MOD(J,100000000)/10000)-1024
48400		RETURN
48500		END
48600		SUBROUTINE IDRA(MN,NZ)
48700		COMMON KP(5),NP,NN(4096),JF
48800		DO 1 I=1,MN
48900		KF=MOD(IABS(NN(I)/100000000),10)
49000		IF(KF.NE.NP)GO TO 1
49100		CALL INXY(IX,IY,I)
49200		CALL IPEN(IX,IY,NN(I),NZ)
49300	1	CONTINUE
49400		RETURN
49500		END